package q71_simplifyPath;

import java.util.ArrayDeque;
import java.util.Deque;

public class Solution_1 {
    public static void main(String[] args) {
        Solution_1 s = new Solution_1();
        // System.out.println("/../".equals("/../"));
        System.out.println(s.simplifyPath("/../"));
    }
    /*
    此题的核心思路还是使用栈来解决问题
     */
    public String simplifyPath(String path) {
        // 先将path按照分隔符进行拆分
        String[] names = path.split("/");
        // 初始化一个 双端队列 （不是栈）
        Deque<String> stack = new ArrayDeque<String>();

        for (String name : names) {
            // 如果发现有.. 则将栈最后一个弹出 （不是清空）
            if ("..".equals(name)) {
                if (!stack.isEmpty()) {
                    stack.pollLast();
                }
            } else if (name.length() > 0 && !".".equals(name)) {
                // 否则判断
                // 1 当前name是否是>0  (避免//导致的分隔产生空字符串)
                // 2 当前元素是否是. 是的话也就是当前目录 也不应入栈
                stack.offerLast(name);
            }
        }

        StringBuilder ans = new StringBuilder();
        // 如果一开始栈就是空 则只需要加入/即可返回
        if (stack.isEmpty()) {
            ans.append('/');
        } else {
            // 否则就依次加上"/"并弹出栈最 开始 元素
            while (!stack.isEmpty()) {
                ans.append('/');
                ans.append(stack.pollFirst());// 这里要使用pollFirst 否则就是弹出栈顶元素
            }
        }
        return ans.toString();

    }
}
